package com.swancloud.model.network.v20210120.fwaas.builder;

import java.util.List;

import com.swancloud.common.Buildable.Builder;
import com.swancloud.model.network.v20210120.fwaas.Firewall;

/**
 * A Builder to Create Firewall of FwaaS
 *
 * @author Vishvesh Deshmukh
 */
public interface FirewallBuilder extends Builder<FirewallBuilder, Firewall> {

	/**
	 * @param tenantId : The ID of the project that owns the resource.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder tenantId(String tenantId);

	/**
	 *
	 * @param projectId: The ID of the project that owns the resource.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder projectId(String projectId);

	/**
	 * @param name : Human readable name for the firewall (255 characters limit). Does not have to be unique.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder name(String name);

	/**
	 * @param description : Human readable description for the firewall (1024 characters limit).
	 * @return FirewallBuilder
	 */
	public FirewallBuilder description(String description);

	/**
	 * @param adminstateup :  The administrative state of the firewall,
	 *         which is up (true) or down (false).
	 * @return FirewallBuilder
	 */
	public FirewallBuilder adminStateUp(Boolean adminStateUp);

	/**
	 * shared : Indicates whether this firewall group is shared across all projects.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder shared(Boolean shared);

	/**
	 * @param policyid : The ID of the ingress firewall policy for the firewall group.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder ingressPolicyId(String policyId);

	/**
	 *
	 * @param policyId: The ID of the egress firewall policy for the firewall group.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder egressPolicyId(String policyId);

	/**
	 * @param portIds : ports A list of the IDs of the ports associated with the firewall group.
	 * @return FirewallBuilder
	 */
	public FirewallBuilder portIds(List<String> portIds);
}
